﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;

namespace DispatchAssist.Weather.Interfaces
{

    public delegate void DisplayWeatherMapEventHandler(IWeatherMapInfo info, Image image);

    /// <summary>
    /// 天气数据显示接口
    /// </summary>
    /// <remarks>抽象全种天气图像显示操作</remarks>
    interface IWeatherDisplayProvider
    {
        #region Properties
        /// <summary>
        /// 数据源
        /// </summary>
        IWeatherMapProvider WeatherMapProvider { get; }

        IWeatherMapInfo WeatherMapInfo { get; }
        /// <summary>
        /// 在播放多张图片
        /// </summary>
        bool IsPlay { get; }

        event DisplayWeatherMapEventHandler DisplayWeatherMap;

        #endregion

        #region Functions
        /// <summary>
        /// 显示最新图片
        /// </summary>
        void Show();
        /// <summary>
        /// 播放多张图片
        /// </summary>
        void Play(double time);
        /// <summary>
        /// 暂停图片播放
        /// </summary>
        void Suspend();
        /// <summary>
        /// 显示第一张图片
        /// </summary>
        void FirstPic();
        /// <summary>
        /// 显示最后一张图片
        /// </summary>
        void LastPic();
        /// <summary>
        /// 显示前一张图片
        /// </summary>
        void ForwardPic();
        /// <summary>
        /// 显示后一张图片
        /// </summary>
        void BackwardPic();
        /// <summary>
        /// 缩小图片
        /// </summary>
        void ZoomOut();
        /// <summary>
        /// 放大图片
        /// </summary>
        void ZoomIn();
        /// <summary>
        /// 移动图片
        /// </summary>
        /// <param name="point"></param>
        void Move(Point point);
        /// <summary>
        /// 显示机场
        /// </summary>
        void ShowAirports();
        /// <summary>
        /// 隐藏机场
        /// </summary>
        void HideAirports();
        /// <summary>
        /// 设置机场显示颜色
        /// </summary>
        /// <param name="color"></param>
        void SetAirportColor(Color color);
        /// <summary>
        /// 选择天气图
        /// </summary>
        /// <param name="mapInfo"></param>
        void SelecteWeatherMapInfo(IWeatherMapInfo mapInfo);
        #endregion

    }
}
